import _typeof from "@babel/runtime/helpers/esm/typeof";
export function generateUUID() {
  var _globalObject;
  var globalObject;
  if ((typeof self === "undefined" ? "undefined" : _typeof(self)) !== undefined) {
    globalObject = self;
  } else if (typeof window !== 'undefined') {
    globalObject = window;
  } else {
    globalObject = Function('return this')();
  }

  /** 内置 UUID 模块的情况下，直接使用内置 crypto 来生成 UUID（密码学安全） */
  if ((_globalObject = globalObject) !== null && _globalObject !== void 0 && (_globalObject = _globalObject.crypto) !== null && _globalObject !== void 0 && _globalObject.randomUUID) {
    return globalObject.crypto.randomUUID();
  }

  /** 无内置模块的情况下，采用算法生成 UUID（无法保证密码学安全） */
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
    var r = Math.random() * 16 | 0;
    var v = c === 'x' ? r : r & 0x3 | 0x8;
    return v.toString(16);
  });
}